package com.satan.novel.author.service;

import com.satan.novel.author.dto.req.AuthorRegisterReqDto;
import com.satan.novel.book.dto.req.*;
import com.satan.novel.book.dto.resp.BookChapterRespDto;
import com.satan.novel.book.dto.resp.BookInfoRespDto;
import com.satan.novel.book.dto.resp.ChapterContentRespDto;
import com.satan.novel.common.resp.PageRespDto;
import com.satan.novel.common.resp.RestResp;

/**
 * @author Demon
 * @date 2024/2/3
 * @Description:
 */
public interface AuthorService {
    /**
     * 查询作家状态
     *
     * @param userId
     * @return
     */
    RestResp<Integer> getStatus(Long userId);

    /**
     * 注册作家
     *
     * @param dto
     * @return
     */
    RestResp<Void> register(AuthorRegisterReqDto dto);

    /**
     * 小说发布列表查询
     *
     * @param dto
     * @return
     */
    RestResp<PageRespDto<BookInfoRespDto>> listPublishBooks(BookPageReqDto dto);

    /**
     * 小说发布
     *
     * @param dto
     * @return
     */
    RestResp<Void> publishBook(BookAddReqDto dto);

    /**
     * 小说章节发布
     *
     * @param dto
     * @return
     */
    RestResp<Void> publishBookChapter(ChapterAddReqDto dto);

    /**
     * 小说章节列表查询
     *
     * @param chapterPageReqReqDto
     * @return
     */
    RestResp<PageRespDto<BookChapterRespDto>> listPublishBookChapters(ChapterPageReqDto chapterPageReqReqDto);

    /**
     * 小说章节删除
     *
     * @param chapterId
     * @return
     */
    RestResp<Void> deleteBookChapter(Long chapterId);

    /**
     * 小说章节更新
     *
     * @param chapterId
     * @param dto
     * @return
     */
    RestResp<Void> updateBookChapter(Long chapterId, ChapterUpdateReqDto dto);

    /**
     * 小说章节查询
     *
     * @param chapterId
     * @return
     */
    RestResp<ChapterContentRespDto> getBookChapter(Long chapterId);
}
